#include <string.h>
#include <stdio.h>
#include <keywords.h>
#include <tokens.h>

char szBuffer[32];
char *keywords[] = {
  "BEGIN",
  "PROGRAM",
  "PROCEDURE",
  "FUNCTION",
  "VAR",
  "INTEGER",
  "REAL",
  "IF",
  "THEN",
  "ELSE",
  "WHILE",
  "DO",
  "REPEAT",
  "UNTIL",
  "OR",
  "AND",
  "NOT",
  "MOD",
  "DIV",  
  "ADD",
  "MUL",
  "HEXA",
  "OCTA",
  "BOOL",
  "PARAM",
  "REFERENCE",
  "CONST",
  "END"
};

int iskeyword(char const *symbol)
{
  int i;
  for(i=BEGIN; i <= END; i++){
    if(strcasecmp(keywords[i-BEGIN], symbol)==0)
      return i;
  }
  return 0;
}

char           *szToken[] = {
	"ID",
	"ASSGNMT", /* := */
	"UINT",
	"FLOAT",
	"LEQ",   /* <= */
	"NEQ",   /* <> */
	"GEQ",   /* >= */
	"EXP",
	"DDOT"  /* .. */
};

char* pWichKeyword(int iKeyIx){
  if ( iKeyIx >= BEGIN && iKeyIx <= END) // Keyword
    return keywords[iKeyIx - BEGIN];
  else if ( iKeyIx > 32 && iKeyIx < 127 ){ // ASCII
    sprintf(szBuffer, "'%c'", iKeyIx);
    return szBuffer;
  }
  else if ( iKeyIx >= ID && iKeyIx <= DDOT) // Token
    return szToken[iKeyIx-ID];
  
  strcpy(szBuffer, "ID"); // Not 100% of cases, btw its ok...
  return szBuffer;
}
